package cn.iocoder.yudao.module.crossborder.risk.api.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 合规检查信息 DTO
 *
 * @author LHL
 */
@Schema(description = "RPC 服务 - 合规检查信息 DTO")
@Data
public class ComplianceCheckDTO {

    @Schema(description = "检查编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
    private Long id;

    @Schema(description = "业务类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "ORDER")
    private String businessType;

    @Schema(description = "业务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
    private Long businessId;

    @Schema(description = "合规类型", example = "1")
    private Integer complianceType;

    @Schema(description = "合规类型名称", example = "反洗钱检查")
    private String complianceTypeName;

    @Schema(description = "检查状态", example = "1")
    private Integer status;

    @Schema(description = "检查结果", example = "通过")
    private String result;

    @Schema(description = "是否合规", example = "true")
    private Boolean isCompliant;

    @Schema(description = "违规项目", example = "无")
    private String violationItems;

    @Schema(description = "检查规则", example = "AML规则1,KYC规则2")
    private String checkRules;

    @Schema(description = "合规要求", example = "需要提供身份证明")
    private String complianceRequirements;

    @Schema(description = "建议动作", example = "补充材料")
    private String recommendedAction;

    @Schema(description = "检查详情", example = "详细的合规检查报告")
    private String checkDetail;

    @Schema(description = "检查时间")
    private LocalDateTime checkTime;

    @Schema(description = "有效期至")
    private LocalDateTime expireTime;

    @Schema(description = "审核人员", example = "compliance_officer")
    private String reviewer;

    @Schema(description = "审核时间")
    private LocalDateTime reviewTime;

    @Schema(description = "审核意见", example = "符合合规要求")
    private String reviewComment;

    @Schema(description = "备注", example = "特殊情况说明")
    private String remark;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    @Schema(description = "更新时间")
    private LocalDateTime updateTime;

}
